package http

import (
	"gitee.com/sdynasty/clever/transport/http/trace"
	"github.com/gin-gonic/gin"
)

// TraceRequest 请求信息
type TraceRequest struct {
	Method     string      `json:"method"`      // 请求方式
	URL 	   string      `json:"url"` // 请求地址
	Header     interface{} `json:"header"`      // 请求 Header 信息
	Body       interface{} `json:"body"`        // 请求 Body 信息
}

// TraceResponse 响应信息
type TraceResponse struct {
	Header          interface{} `json:"header"`                      // Header 信息
	Body            interface{} `json:"body"`                        // Body 信息
	BusinessCode    uint32      `json:"business_code,omitempty"`     // 业务码
	BusinessCodeMsg string      `json:"business_code_msg,omitempty"` // 提示信息
	HttpCode        int         `json:"http_code"`                   // HTTP 状态码
	HttpCodeMsg     string      `json:"http_code_msg"`               // HTTP 状态码信息
}

const (
	keyTrace = "_trace_"
)

func Trace(c *gin.Context) *trace.Trace {
	v, exists := c.Get(keyTrace)
	if !exists {
		return nil
	}
	return v.(*trace.Trace)
}